import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;

/**
 * @author Jimmy Zhan WORKSTATION
 * @since 2023/8/21 19:52
 * 说明：无重复的最长子串
 */

public class NoRepetitionLongestString {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        System.out.println(lengthOfLongestSubstring(str));
    }

    public static int lengthOfLongestSubstring(String s) {
        // 这题用哈希
        // 因为双指针的right每向右移动一位，都要遍历left和right找有没有重复的。时间爆炸
        // 哈希也可以使用哈希map或者哈希数组，因为s由英文字母、数字、符号和空格，所以不能使用数组
        // Set则无法记录前一个重复字符的index，如果要用set的话，就不方便维护left指针
        // 所以还是用Map，直接get一下重复的key，就可以拿到长度了
        int len = s.length();

        int maxLen = 0;
        int left = 0;
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < len; ++i) {
            if (map.containsKey(s.charAt(i))) {
                left = Math.max(left, map.get(s.charAt(i)) + 1);
            }
            map.put(s.charAt(i), i);
            maxLen = Math.max(maxLen, i - left + 1);
        }
        return maxLen;
    }


}
